Kyl*_*yle 12 ruby ruby-on-rails
我想通过link_to
Rails中的方法传递参数.我知道有一种方法可以通过URL来实现,但我真的不想那样做.有没有办法通过链接传递参数而不将其添加到链接本身?
我知道在PHP中你可以发布然后使用post变量检索该值.Rails中有类似的东西吗?
Sim*_*eev 11
link_to
签名如下:
link_to(body, url_options = {}, html_options = {})
Run Code Online (Sandbox Code Playgroud)
因此,POST看起来像(假设您想要POST用户的数据):
link_to "Link text", some_path(:foo => "bar", :baz => "quux"), user: @user, :method => :post
Run Code Online (Sandbox Code Playgroud)
可以使用控制器在控制器中检索用户的数据 params[:user]
以下是通过link_to方法传递参数的方法,例如,使用传递的参数创建一个新对象.此策略允许您在控制器中的操作之间传递变量,并使用预定义的属性创建对象:
在显示视图中,您有一个名为@foo的变量,您希望将其传递给新的控制器操作.在这种情况下,在您的节目视图中,您可以拥有
<%= link_to "Link Text", new_widget_path(:foo => @foo) %>
Run Code Online (Sandbox Code Playgroud)
将@foo存储在params [:foo]中,允许你在控制器中使用params [:foo].您获得的控制器操作取决于*new_widget_path*.在这种情况下,您将被引导到WidgetController中的新操作.
单击链接文本将指向Rails到WidgetController 的新操作.你可以有
def new
@widget = Widget.new(:foo => params[:foo])
end
Run Code Online (Sandbox Code Playgroud)
然后,在new.html.erb视图文件中,您可以允许用户创建一个新的Widget对象,其中已经通过隐藏的表单字段填充了此预定义的foo属性:
<%= form_for(@widget) do |f| %>
<%= f.label :other_attribute %><br />
<%= f.text_field :other_attribute %>
<%= f.hidden_field :foo %>
<%= f.submit %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
允许用户创建一个已填写foo属性的新窗口小部件!
归档时间: |
|
查看次数: |
16715 次 |
最近记录: |