开发者

How to use a select to go to the Show action of another controller?

开发者 https://www.devze.com 2022-12-09 10:47 出处:网络
I\'m trying to do something I thought easy and natural but I\'m struggling.. On the homepage of my website, I want a select containing a list of users. After selecting a user and clicking on a button

I'm trying to do something I thought easy and natural but I'm struggling..

On the homepage of my website, I want a select containing a list of users. After selecting a user and clicking on a button, it should go to the show action of the User controller page.

I searched and 开发者_如何学运维found differents answers that I don't find very elegant:

  • using AJAX http://www.mail-archive.com/rubyonrails-talk@googlegroups.com/msg36368.html
  • using an observe_field to modify the url in the html

Is there a better way doing this?

What would be the best way?


I would probably do this with jQuery...or just plain old javascript.

$("#button_id").click(function(){
  window.location = '/users/' + $("#select_list_id").children("option:selected").val();
});

That should add an onclick method to the button and then forward you to '/user/12345'.

You could do the same thing in plain javascript if you aren't using jquery, but it's a little more involved.

<script type="javascript">
  function goToUsersPage() {
    list = document.getElementById('select_list_id')
    window.location = '/users' + list.options[selectedIndex].value;
  }
</script>

Then you need to add the function call to the onclick method of your button.

<input type='button' onclick='goToUsersPage();' value='Go!'/>


Instead of using javascript you could just make the select and button a form and have an action in the controller that takes the user id and redirects to the user's page.

Something like:

def user_form
  @user = User.find(params[:id])
  respond_to do |format|
    format.html { redirect_to(@user) }
  end
end
0

精彩评论

暂无评论...
验证码 换一张
取 消