我有一个用于创建模型消息的新记录的表单。
但是,创建它的路线已经自定义为:
match 'messages/:sender_id/to/:receiver_id' => "messages#new", :as => :send_message
我想从新操作然后传递值:sender_id和:receiver_id所以我可以将它分配给相关的模型,称为UserHasMessages。
每当创建Message的新记录时,都需要创建此模型。
但是我不能使用隐藏字段,因为:sender_id不是Message的属性。它是UserHasMessages的一个属性。
感谢。
控制器/ messages_controller.rb
def create
15 @message = Message.new(params[:message])
16 if @message.save
17 @user_has_message = UserHasMessages.new
18 @user_has_message.user_id = params[:sender_id]
19 @user_has_message.message_id = @message.id
20 @user_has_message.is_sender = 1
21 @user_has_message.save
22
23 @user_has_message = UserHasMessages.new
24 @user_has_message.user_id = params[:receiver_id]
25 @user_has_message.message_id = @message.id
26 @user_has_message.is_sender = 0
27 @user_has_message.save
视图/消息/ _form。
<%= form_for @message do |f| %>
2 <%= f.error_messages %>
3 <p>
4 <%= f.label :subject %><br />
5 <%= f.text_field :subject %>
6 </p>
7 <p>
8 <%= f.label :body %><br />
9 <%= f.text_area :body %>
10 </p>
11 <p>
12 <%= f.label :contact_id %><br />
13 <%= f.text_field :contact_id %>
14 </p>
15 <p>
16 <%= f.label :company_id %><br />
17 <%= f.text_field :company_id %>
18 </p>
19 <p>
20
21 <%= hidden_field_tag :sender_id, :value => params[:sender_id] %>
22 <%= hidden_field_tag :receiver_id, :value => params[:receiver_id] %>
23 </p>
24
25 <p><%= f.submit %></p>
26 <% end %>
message_controller /新
10 def new
11 @message = Message.new
12 end
答案 0 :(得分:1)
我不确定我理解你的问题......让我们按照目前的理解来尝试:)
我相信您在表单字段中输入的任何参数都可以在控制器的params哈希中访问。例如,如果您放置一个名为“test_field”的表单字段,那么在您的控制器中,您将能够通过params [:test_field]读取它的值。
在你的控制器中,我建议你在测试时加上这样的一行: 把params.inspect
希望有所帮助! 皮尔。
答案 1 :(得分:1)
在form_for中,可以传递与模型对象无关的独立值,如此
form_for :message do |f|
f.text_field ..
...
hidden_field_tag :sender_id, params[:sender_id]
hidden_field_tag :receiver_id, params[:receiver_id]
end
可以create
方法params[:sender_id]
和params[:receiver_id]